//package design.mode.effective_java.chapter4.item18;
//
//
//
//import java.time.Instant;
//import java.util.Collection;
//import java.util.HashSet;
//import java.util.Set;
//import java.util.TreeSet;
//
///**
// * 包装器类——使用组合代替继承
// *
// * @author ZhongMingde on 2021/8/14
// */
//
//public class InstrumentedSet<E>  extends ForwardingSet<E>{
//
//    private int addCount = 0;
//
//    public InstrumentedSet(Set<E> s) {
//        super(s);
//    }
//    @Override
//    public boolean add(E e) {
//        addCount++;
//        return super.add(e);
//    }
//
//    @Override
//    public boolean addAll(Collection<? extends E> c) {
//        addCount += c.size();
//        return super.addAll(c);
//    }
//
//    public int getAddCount() {
//        return addCount;
//    }
//
//    public static void main(String[] args) {
//        Set<Instant> times = new InstrumentedSet<>(new TreeSet<>());
////        Set<E> s = new InstrumentedSet<>(new HashSet<>());
//    }
//
//    static void walk(Set<Dog> dogs){
//        InstrumentedHashSet<Dog> iDogs = new InstrumentedHashSet<Dog>();
//    }
//
//}
//
//
